Vue项目webpack打包报错:Module not found: Error: Can't resolve './src/todoItem' 您所在的位置:网站首页 module not found vue Vue项目webpack打包报错:Module not found: Error: Can't resolve './src/todoItem'

Vue项目webpack打包报错:Module not found: Error: Can't resolve './src/todoItem'

2023-02-17 21:39| 来源: 网络整理| 查看: 265

问题描述

今天在学习vue单文件组件的打包,在运行 npm run build 打包出现报错。

ERROR in ./components/todoItem/index.js Module not found: Error: Can't resolve './src/todoItem' in '*******' @ ./components/todoItem/index.js 1:0-38 3:15-23 @ ./main.js 复制代码

组件目录

components └── todoItem ├── index.js └── src └── todoItem.vue 复制代码

components/todoItem/index.js

import todoItem from './src/todoItem'; export default todoItem; 复制代码

package.json

{ "name": "vue_without_teamplate", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --config webpack.config.js", "dev": "webpack-dev-server --open " }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "vue": "^2.6.11" }, "devDependencies": { "babel-core": "^6.26.3", "babel-loader": "^7.1.5", "clean-webpack-plugin": "^3.0.0", "html-webpack-plugin": "^4.0.2", "vue-loader": "^15.9.1", "vue-template-compiler": "^2.6.11", "webpack": "^4.42.1", "webpack-cli": "^3.3.11", "webpack-dev-server": "^3.10.3" } } 复制代码

webpack.config.js

const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const VueLoaderPlugin = require('vue-loader/lib/plugin'); module.exports = { mode: "development", entry: { app: './main.js' }, output: { path: path.join(__dirname, './dist'), filename: '[name].bundle.js' }, devServer: { contentBase: './dist', hot: true }, module: { rules: [ // ... 其它规则 { test: /\.vue$/, loader: 'vue-loader' }, // 它会应用到普通的 `.js` 文件 // 以及 `.vue` 文件中的 `` 块 { test: /\.js$/, loader: 'babel-loader' }, ] }, plugins: [ new HtmlWebpackPlugin({ title: 'Output Management', filename: 'index.html', template: './index.html' }), new CleanWebpackPlugin(), // 请确保引入这个插件! new VueLoaderPlugin() ], resolve: { alias: { 'vue$': 'vue/dist/vue.js' // 用 webpack 1 时需用 'vue/dist/vue.common.js' }, } } 复制代码原因

问题的根源是在导入组件时没有指定文件扩展名。真是惭愧😥,使用脚手架构建项目,组件导入的时候都是不用拓展名的,却又没有深究为什么可以不适用拓展名。因为脚手架生成的配置文件中有对模块文件的扩展名的相关配置:

module.exports = { //... resolve: { // 以下配置会将没指定拓展名的文件按如下类型查找匹配 extensions: [ //... '.js', '.json','.vue' ] } }; 复制代码解决方案 在导入文件的时候指定拓展名

components/todoItem/index.js

- import todoItem from './src/todoItem'; + import todoItem from './src/todoItem.vue'; export default todoItem; 复制代码 在webpack配置文件中配置

webpack.config.js

module.exports = { //... resolve: { alias: { 'vue$': 'vue/dist/vue.js' // 用 webpack 1 时需用 'vue/dist/vue.common.js' }, + extensions: ['*', '.js', '.vue'] } }; 复制代码


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有